$(document).ready(function(e) {	
	var arrayInput = [];

	$.upload = function(opciones){
		var options = $.extend({
			urlprocesa : 'null',
			variables : [],
			repositorio : '/',
			repost : '/',
			idElemento : 'file',
			idtabla : 'upload',
			idcampofilt : '',
			idvisor : '',
			idface : '',
			idcontrato : '',
			listaArchivo : '',
			triggerUpload : ''
		},opciones);

	var archivo_upload ='';
	var n = 0,
			contador = 0,
			total_file = 0,
			fileInput = document.getElementById(opciones.idElemento),
			new_file = document.createElement("input"),
			lista_archivos_cargar ='';

			new_file.setAttribute("type", "file");
	  		new_file.setAttribute("name", "file[]");
	  		new_file.setAttribute("class", "hidden");
	  		document.getElementById('frm_upload').insertBefore(new_file, fileInput);
		
		$(new_file).click();
		$(new_file).change(function(){

			//console.log("tabla="+opciones.idtabla);
			//console.log('upload');
			total_file = $(':file').length;
			contador = total_file - 2;

			for (var i = 0; i < 1; i++) {
				var fileSize = 0;

			    if (new_file.files[i]['size'] > 1024 * 1024) {
			       	fileSize = (Math.round(new_file.files[i]['size'] * 100 / (1024 * 1024)) / 100).toString() + 'MB';
			    } else {
			       	fileSize = (Math.round(new_file.files[i]['size'] * 100 / 1024) / 100).toString() + 'KB';
			    }
				
				fileSizeMb =  Math.round(new_file.files[i]['size'] * 100 / (1024 * 1024)) / 100
								
				if (fileSizeMb>80){
					alert("El Tamaño Máximo permitido de un archivo a guardar es de 80 Mb");
					return false;
				}

				
				 var texto = new_file.files[i]['name'];
				 var Posextension = texto.lastIndexOf("."); 
				 texto = texto.substring(texto,Posextension,0); 
				 var expreg = /^([0-9\s\a-záéíóúÁÉÍÓÚñÑ()A-Z_-])+$/;
  
				 if(!expreg.test(texto)){ 
						msn ="El nombre del archivo a adjuntar no es válido, solo está permitido adjuntar archivos cuyo nombre contenga los siguientes caracteres:\n\n"
						msn+= "Letras de la “A”  a la “Z”\n"
						msn+="Números del  “0” al “9”\n"
						msn+="Caracteres especiales  “ -  _ ( ) ” y espacios en blanco\n"
					alert(msn)	
					$(new_file).remove();	
					return false;
								
				 }else{

					var listafile = [
					"<div class='lista_file'>",
					"<span class='nombre_archivo'>"+new_file.files[i]['name']+"</span>",
					"<span class='tamano_archivo'>"+fileSize+"</span>",
					"<span class='estado_archivo'><div class='progressbar progressbar-blue'>",
        			"<div class='progressbar-inner-"+contador+" loading' ></div>",
  					"</div></span>",
					"</div>"
				].join('');		
					$('#'+opciones.listaArchivo).append(listafile);																			
				}								
			}
		});

		$('#'+opciones.triggerUpload).click(function(){
			if (n < 1) {
				data = new FormData();
				var ncadena='';


				if(typeof (opciones.repost)!="undefined"){
					data.append('vrepost',opciones.repost);
				}else{
					data.append('vrepost','');
				}
			
				data.append('idtabla',opciones.idtabla);
				data.append('idcampofilt',opciones.idcampofilt);
				data.append('idfase',opciones.idface);
				data.append('idcontrato',opciones.idcontrato);
			
				for (var i = 0; i < total_file-1; i++) {																						 	
			
					data.append('archivo[]',new_file.files[i]);
					data.append('path',opciones.repositorio);
														
					if (opciones.variables) 
					{
						data.append('parametro',opciones.variables.join(','));
					}
					var xhr = new XMLHttpRequest();
						percentComplete = 0

					var clase = '.progressbar-inner-'+i;

					xhr.upload.addEventListener("progress", function(e){
						if (e.lengthComputable) {
							var percentComplete = Math.ceil((e.loaded/e.total) * 100);
							$(clase).css({'width':percentComplete-4+'%', 'padding-right':'5%'});
							$(clase).removeClass('loading');
							$(clase).text(percentComplete+'%');
						} else {
						   	document.getElementById('progressNumber').innerHTML = 'unable to compute';
						};
					});

					xhr.upload.addEventListener("load", function(e){
						$(clase).css({'width':'96%', 'padding-right':'5%'});
						$(clase).text('100%');
					})

					xhr.upload.addEventListener("error", function(e){					 
					  alert('Error en upload de archivo: ' + lista_archivos_cargar);
					})											
																	
				}
		

				$('.lista_file .loading').each(function() {
						archivo_upload =  $(this).closest('.lista_file').find('.nombre_archivo').text();
				});
	
				xhr.open('POST', opciones.urlprocesa + "?Fup=" + archivo_upload);
				xhr.setRequestHeader('Cache-Control','no-cache');
				xhr.onreadystatechange = function() {
					if (xhr.readyState==4) {
						if(xhr.responseText!=''){
							$('#result_file ul').html(xhr.responseText);
							$('#result_file ul').find('img').remove();
							if(typeof (opciones.idvisor)!="undefined"){
								if (opciones.upload_externo=='1'){
									window.opener.$('#'+opciones.idvisor).html(xhr.responseText)
								}else{
									$('#'+opciones.idvisor).html(xhr.responseText);
								}																		
						   	}
						}
						
						var result = document.createElement("div");
						result.setAttribute("class", "hidden");
						result.innerHTML = xhr.responseText;
						document.getElementById('frm_upload').insertBefore(result, fileInput);
					 	
					}
				}				
				xhr.send(data);
				console.log(data)
			};

			n++;
		});
	}

})

